Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

339
Vistas
¿Por qué DateTime.TryParse ve "1,5" como válido (y cómo prevenirlo)?

Al intentar validar la entrada del usuario, una cadena de entrada de "1,5" da como resultado una fecha válida:

 var s = "1,5"; DateTime d; var b = DateTime.TryParse(s, CultureInfo.InvariantCulture, DateTimeStyles.None, out d); Console.WriteLine("s: " + s); Console.WriteLine("b: " + b); Console.WriteLine("d: " + d);

La salida es:

 s: 1,5 b: True d: 1/5/2021 12:00:00 AM

Violín .NET

Mi intención era que "1,5" no se considere como un DateTime válido. Obviamente, estoy equivocado.

Probé esto tanto en .NET Framework 4.8 como en .NET Core 5 con los mismos resultados.

Después de revisar las fuentes .NET del método DateTime.TryParse , todavía no puedo entender por qué se considera una fecha válida.

Además, me encantaría evitar de alguna manera que el método reconozca esto como una fecha válida. Mi conjetura es ir con DateTime.TryParseExact pero tal vez haya mejores opciones.

Mis preguntas

  1. ¿Por qué DateTime.TryParse en cultura invariable considera "1,5" como una fecha válida?
  2. ¿Cómo prevenir este comportamiento?
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Lo está analizando como "Mes, Día" en el año actual, por eso lo permite.

DateTime.TryParse() es notoriamente permisivo: el consejo generalmente es usar DayTime.TryParseExact() para evitar tales cosas (como usted mismo sugiere).

No hay mejor manera de resolver esto que usar DateTime.TryParseExact() .

Este comportamiento está realmente documentado :

Este método intenta ignorar los datos no reconocidos, si es posible, y completa la información faltante del mes, día y año con la fecha actual. Si s contiene solo una fecha y ninguna hora, este método asume que la hora es a las 12:00 de la noche.

Por lo tanto, analiza el mes y el número de día, y luego establece el año en el año de la fecha actual y la hora en la medianoche.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda